package com.zhongfl.crm.service.boss;

import com.zhongfl.crm.enums.boss.AmibaCode;
import com.zhongfl.crm.model.boss.AmibaStaff;

import java.util.List;

/**
 * 阿米巴员工关系服务
 *
 * @author wang.yuchuan
 * @date 2018/5/3
 */
public interface AmibaStaffService {

    /**
     * 保存阿米巴 员工 关系
     *
     * @param amibaStaff 阿米巴-员工关系
     */
    void saveAmibaStaff(AmibaStaff amibaStaff);

    /**
     * 批量添加
     *
     * @param amibaStaffs
     */
    void saveBatch(List<AmibaStaff> amibaStaffs);

    /**
     * 更新
     *
     * @param amibaStaff
     */
    void updateAmibaStaff(AmibaStaff amibaStaff);

    /**
     * 移除
     *
     * @param id
     */
    void deleteAmibaStaff(Integer id);

    /**
     * 根据amibaId删除
     */
    void deleteByAmibaId(Integer amibaId);

    /**
     * 批量删除
     */
    void deleteBatchByAmibaId(List<Integer> amibaIds);


    /**
     * 获取阿米巴下的巴员列表
     *
     * @param amibaId 阿米巴ID
     * @return 巴员列表
     */
    List<AmibaStaff> findByAmibaId(Integer amibaId);

    List<AmibaStaff> findByAmibaIds(List<Integer> amibaIds);

    List<AmibaStaff> findByAmibaIdsAll(List<Integer> amibaIds);

    /**
     * 获取指定员工的阿米巴信息
     *
     * @param staffCode
     * @return
     */
    List<AmibaStaff> findByStaffCode(String staffCode);

    /**
     * 获取指定员工的阿米巴信息
     *
     * @param staffCode
     * @return
     */
    AmibaStaff findSingleByStaffCode(String staffCode);

    /**
     * 根据阿米巴和员工编码查询员工
     *
     * @param staffCode
     * @param amibaId
     * @return
     */
    AmibaStaff findByStaffCodeAndAmibaId(String staffCode, Integer amibaId);

    /**
     * 根据
     *
     * @param staffCode
     * @param amibaCode
     * @return
     */
    List<AmibaStaff> findByStaffCodeAndAmibaCode(String staffCode, AmibaCode amibaCode);

    /**
     * 根据阿米巴code查询员工列表
     */
    List<AmibaStaff> findByAmibaCode(AmibaCode amibaCode);

    List<AmibaStaff> findManagerByAmibaCode(AmibaCode code);

    /**
     * 根据记录id查询
     */
    AmibaStaff findById(Integer id);

    /**
     * 通过阿米巴编号过滤
     *
     * @param list      员工所属巴列表
     * @param amibaCode 阿米巴编号
     * @return 过滤后列表
     */
    List<AmibaStaff> filterByAmibaCode(List<AmibaStaff> list, AmibaCode amibaCode);

    /**
     * 查询所有阿米巴成员
     */
    List<AmibaStaff> findAllAmibaStaff();

    /**
     * 通过条件查询员工列表
     *
     * @param amibaStaff 查询条件
     * @return 员工列表信息
     */
    List<AmibaStaff> findByCondition(AmibaStaff amibaStaff);

}
